6dofimu27 2.2.1
Loading...
Searching...
No Matches
c6dofimu27.h File Reference

This file contains API for 6DOF IMU 27 Click Driver. More...

#include "drv_digital_out.h"
#include "drv_digital_in.h"
#include "drv_i2c_master.h"
#include "drv_spi_master.h"
#include "spi_specifics.h"

Go to the source code of this file.

Data Structures

struct  c6dofimu27_s
 6DOF IMU 27 Click context object. More...
struct  c6dofimu27_cfg_t
 6DOF IMU 27 Click configuration object. More...
struct  c6dofimu27_axes_t
 6DOF IMU 27 Click axes data structure. More...
struct  c6dofimu27_data_t
 6DOF IMU 27 Click data structure. More...

Macros

#define C6DOFIMU27_REG_ACCEL_DATA_X1_UI   0x00
 6DOF IMU 27 USER BANK 0 register map summary.
#define C6DOFIMU27_REG_ACCEL_DATA_X0_UI   0x01
#define C6DOFIMU27_REG_ACCEL_DATA_Y1_UI   0x02
#define C6DOFIMU27_REG_ACCEL_DATA_Y0_UI   0x03
#define C6DOFIMU27_REG_ACCEL_DATA_Z1_UI   0x04
#define C6DOFIMU27_REG_ACCEL_DATA_Z0_UI   0x05
#define C6DOFIMU27_REG_GYRO_DATA_X1_UI   0x06
#define C6DOFIMU27_REG_GYRO_DATA_X0_UI   0x07
#define C6DOFIMU27_REG_GYRO_DATA_Y1_UI   0x08
#define C6DOFIMU27_REG_GYRO_DATA_Y0_UI   0x09
#define C6DOFIMU27_REG_GYRO_DATA_Z1_UI   0x0A
#define C6DOFIMU27_REG_GYRO_DATA_Z0_UI   0x0B
#define C6DOFIMU27_REG_TEMP_DATA1_UI   0x0C
#define C6DOFIMU27_REG_TEMP_DATA0_UI   0x0D
#define C6DOFIMU27_REG_TMST_FSYNCH   0x0E
#define C6DOFIMU27_REG_TMST_FSYNCL   0x0F
#define C6DOFIMU27_REG_PWR_MGMT0   0x10
#define C6DOFIMU27_REG_FIFO_COUNT_0   0x12
#define C6DOFIMU27_REG_FIFO_COUNT_1   0x13
#define C6DOFIMU27_REG_FIFO_DATA   0x14
#define C6DOFIMU27_REG_INT1_CONFIG0   0x16
#define C6DOFIMU27_REG_INT1_CONFIG1   0x17
#define C6DOFIMU27_REG_INT1_CONFIG2   0x18
#define C6DOFIMU27_REG_INT1_STATUS0   0x19
#define C6DOFIMU27_REG_INT1_STATUS1   0x1A
#define C6DOFIMU27_REG_ACCEL_CONFIG0   0x1B
#define C6DOFIMU27_REG_GYRO_CONFIG0   0x1C
#define C6DOFIMU27_REG_FIFO_CONFIG0   0x1D
#define C6DOFIMU27_REG_FIFO_CONFIG1_0   0x1E
#define C6DOFIMU27_REG_FIFO_CONFIG1_1   0x1F
#define C6DOFIMU27_REG_FIFO_CONFIG2   0x20
#define C6DOFIMU27_REG_FIFO_CONFIG3   0x21
#define C6DOFIMU27_REG_FIFO_CONFIG4   0x22
#define C6DOFIMU27_REG_TMST_WOM_CONFIG   0x23
#define C6DOFIMU27_REG_FSYNC_CONFIG0   0x24
#define C6DOFIMU27_REG_FSYNC_CONFIG1   0x25
#define C6DOFIMU27_REG_RTC_CONFIG   0x26
#define C6DOFIMU27_REG_DMP_EXT_SEN_ODR_CFG   0x27
#define C6DOFIMU27_REG_ODR_DECIMATE_CONFIG   0x28
#define C6DOFIMU27_REG_EDMP_APEX_EN0   0x29
#define C6DOFIMU27_REG_EDMP_APEX_EN1   0x2A
#define C6DOFIMU27_REG_APEX_BUFFER_MGMT   0x2B
#define C6DOFIMU27_REG_INTF_CONFIG0   0x2C
#define C6DOFIMU27_REG_INTF_CONFIG1_OVRD   0x2D
#define C6DOFIMU27_REG_INTF_AUX_CONFIG   0x2E
#define C6DOFIMU27_REG_IOC_PAD_SCENARIO   0x2F
#define C6DOFIMU27_REG_IOC_PAD_SCENARIO_AUX_OVRD   0x30
#define C6DOFIMU27_REG_DRIVE_CONFIG0   0x32
#define C6DOFIMU27_REG_DRIVE_CONFIG1   0x33
#define C6DOFIMU27_REG_DRIVE_CONFIG2   0x34
#define C6DOFIMU27_REG_INT_APEX_CONFIG0   0x39
#define C6DOFIMU27_REG_INT_APEX_CONFIG1   0x3A
#define C6DOFIMU27_REG_INT_APEX_STATUS0   0x3B
#define C6DOFIMU27_REG_INT_APEX_STATUS1   0x3C
#define C6DOFIMU27_REG_ACCEL_DATA_X1_UI_AUX1   0x44
#define C6DOFIMU27_REG_ACCEL_DATA_X0_UI_AUX1   0x45
#define C6DOFIMU27_REG_ACCEL_DATA_Y1_UI_AUX1   0x46
#define C6DOFIMU27_REG_ACCEL_DATA_Y0_UI_AUX1   0x47
#define C6DOFIMU27_REG_ACCEL_DATA_Z1_UI_AUX1   0x48
#define C6DOFIMU27_REG_ACCEL_DATA_Z0_UI_AUX1   0x49
#define C6DOFIMU27_REG_GYRO_DATA_X1_UI_AUX1   0x4A
#define C6DOFIMU27_REG_GYRO_DATA_X0_UI_AUX1   0x4B
#define C6DOFIMU27_REG_GYRO_DATA_Y1_UI_AUX1   0x4C
#define C6DOFIMU27_REG_GYRO_DATA_Y0_UI_AUX1   0x4D
#define C6DOFIMU27_REG_GYRO_DATA_Z1_UI_AUX1   0x4E
#define C6DOFIMU27_REG_GYRO_DATA_Z0_UI_AUX1   0x4F
#define C6DOFIMU27_REG_TEMP_DATA1_UI_AUX1   0x50
#define C6DOFIMU27_REG_TEMP_DATA0_UI_AUX1   0x51
#define C6DOFIMU27_REG_TMST_FSYNCH_AUX1   0x52
#define C6DOFIMU27_REG_TMST_FSYNCL_AUX1   0x53
#define C6DOFIMU27_REG_PWR_MGMNT0_AUX1   0x54
#define C6DOFIMU27_REG_FS_SEL_AUX1   0x55
#define C6DOFIMU27_REG_INT2_CONFIG0   0x56
#define C6DOFIMU27_REG_INT2_CONFIG1   0x57
#define C6DOFIMU27_REG_INT2_CONFIG2   0x58
#define C6DOFIMU27_REG_INT2_STATUS0   0x59
#define C6DOFIMU27_REG_INT2_STATUS1   0x5A
#define C6DOFIMU27_REG_WHO_AM_I   0x72
#define C6DOFIMU27_REG_REG_HOST_MSG   0x73
#define C6DOFIMU27_REG_IREG_ADDR_15_8   0x7C
#define C6DOFIMU27_REG_IREG_ADDR_7_0   0x7D
#define C6DOFIMU27_REG_IREG_DATA   0x7E
#define C6DOFIMU27_REG_MISC2   0x7F
#define C6DOFIMU27_MISC2_SOFT_RST   0x02
 6DOF IMU 27 MISC2 register setting.
#define C6DOFIMU27_MISC2_IREG_DONE   0x01
#define C6DOFIMU27_INTX_STATUS0_RESET_DONE   0x80
 6DOF IMU 27 INTx_CONFIG0/INTx_STATUS0 register setting.
#define C6DOFIMU27_INTX_STATUS0_AUX1_AGC_RDY   0x40
#define C6DOFIMU27_INTX_STATUS0_AP_AGC_RDY   0x20
#define C6DOFIMU27_INTX_STATUS0_AP_FSYNC   0x10
#define C6DOFIMU27_INTX_STATUS0_AUX1_DRDY   0x08
#define C6DOFIMU27_INTX_STATUS0_DRDY   0x04
#define C6DOFIMU27_INTX_STATUS0_FIFO_THS   0x02
#define C6DOFIMU27_INTX_STATUS0_FIFO_FULL   0x01
#define C6DOFIMU27_INTX_STATUS1_APEX_EVENT   0x40
 6DOF IMU 27 INTx_CONFIG1/INTx_STATUS1 register setting.
#define C6DOFIMU27_INTX_STATUS1_I2CM_DONE   0x20
#define C6DOFIMU27_INTX_STATUS1_I3C_PROTOCOL_ERR   0x10
#define C6DOFIMU27_INTX_STATUS1_WOM_Z   0x08
#define C6DOFIMU27_INTX_STATUS1_WOM_Y   0x04
#define C6DOFIMU27_INTX_STATUS1_WOM_X   0x02
#define C6DOFIMU27_INTX_STATUS1_PLL_RDY   0x01
#define C6DOFIMU27_INTX_CONFIG2_DRIVE_PP   0x00
 6DOF IMU 27 INTx_CONFIG2 register setting.
#define C6DOFIMU27_INTX_CONFIG2_DRIVE_OD   0x04
#define C6DOFIMU27_INTX_CONFIG2_DRIVE_MASK   0x04
#define C6DOFIMU27_INTX_CONFIG2_MODE_PULSE   0x00
#define C6DOFIMU27_INTX_CONFIG2_MODE_LATCH   0x02
#define C6DOFIMU27_INTX_CONFIG2_MODE_MASK   0x02
#define C6DOFIMU27_INTX_CONFIG2_POLARITY_ACT_LOW   0x00
#define C6DOFIMU27_INTX_CONFIG2_POLARITY_ACT_HIGH   0x01
#define C6DOFIMU27_INTX_CONFIG2_POLARITY_MASK   0x01
#define C6DOFIMU27_PWR_MGMT0_GYRO_MODE_OFF   0x00
 6DOF IMU 27 PWR_MGMT0 register setting.
#define C6DOFIMU27_PWR_MGMT0_GYRO_MODE_STBY   0x04
#define C6DOFIMU27_PWR_MGMT0_GYRO_MODE_LP   0x08
#define C6DOFIMU27_PWR_MGMT0_GYRO_MODE_LN   0x0C
#define C6DOFIMU27_PWR_MGMT0_GYRO_MODE_MASK   0x0C
#define C6DOFIMU27_PWR_MGMT0_ACCEL_MODE_OFF   0x00
#define C6DOFIMU27_PWR_MGMT0_ACCEL_MODE_LP   0x02
#define C6DOFIMU27_PWR_MGMT0_ACCEL_MODE_LN   0x03
#define C6DOFIMU27_PWR_MGMT0_ACCEL_MODE_MASK   0x03
#define C6DOFIMU27_GYRO_CONFIG0_UI_FS_SEL_4000DPS   0x00
 6DOF IMU 27 GYRO_CONFIG0 register setting.
#define C6DOFIMU27_GYRO_CONFIG0_UI_FS_SEL_2000DPS   0x10
#define C6DOFIMU27_GYRO_CONFIG0_UI_FS_SEL_1000DPS   0x20
#define C6DOFIMU27_GYRO_CONFIG0_UI_FS_SEL_500DPS   0x30
#define C6DOFIMU27_GYRO_CONFIG0_UI_FS_SEL_250DPS   0x40
#define C6DOFIMU27_GYRO_CONFIG0_UI_FS_SEL_125DPS   0x50
#define C6DOFIMU27_GYRO_CONFIG0_UI_FS_SEL_62_5DPS   0x60
#define C6DOFIMU27_GYRO_CONFIG0_UI_FS_SEL_31_25DPS   0x70
#define C6DOFIMU27_GYRO_CONFIG0_UI_FS_SEL_15_625DPS   0x80
#define C6DOFIMU27_GYRO_CONFIG0_UI_FS_SEL_MASK   0xF0
#define C6DOFIMU27_GYRO_CONFIG0_ODR_6400HZ   0x03
#define C6DOFIMU27_GYRO_CONFIG0_ODR_3200HZ   0x04
#define C6DOFIMU27_GYRO_CONFIG0_ODR_1600HZ   0x05
#define C6DOFIMU27_GYRO_CONFIG0_ODR_800HZ   0x06
#define C6DOFIMU27_GYRO_CONFIG0_ODR_400HZ   0x07
#define C6DOFIMU27_GYRO_CONFIG0_ODR_200HZ   0x08
#define C6DOFIMU27_GYRO_CONFIG0_ODR_100HZ   0x09
#define C6DOFIMU27_GYRO_CONFIG0_ODR_50HZ   0x0A
#define C6DOFIMU27_GYRO_CONFIG0_ODR_25HZ   0x0B
#define C6DOFIMU27_GYRO_CONFIG0_ODR_12_5HZ   0x0C
#define C6DOFIMU27_GYRO_CONFIG0_ODR_6_25HZ   0x0D
#define C6DOFIMU27_GYRO_CONFIG0_ODR_3_125HZ   0x0E
#define C6DOFIMU27_GYRO_CONFIG0_ODR_1_5625HZ   0x0F
#define C6DOFIMU27_GYRO_CONFIG0_ODR_MASK   0x0F
#define C6DOFIMU27_ACCEL_CONFIG0_UI_FS_SEL_32G   0x00
 6DOF IMU 27 ACCEL_CONFIG0 register setting.
#define C6DOFIMU27_ACCEL_CONFIG0_UI_FS_SEL_16G   0x10
#define C6DOFIMU27_ACCEL_CONFIG0_UI_FS_SEL_8G   0x20
#define C6DOFIMU27_ACCEL_CONFIG0_UI_FS_SEL_4G   0x30
#define C6DOFIMU27_ACCEL_CONFIG0_UI_FS_SEL_2G   0x40
#define C6DOFIMU27_ACCEL_CONFIG0_UI_FS_SEL_MASK   0x70
#define C6DOFIMU27_ACCEL_CONFIG0_ODR_6400HZ   0x03
#define C6DOFIMU27_ACCEL_CONFIG0_ODR_3200HZ   0x04
#define C6DOFIMU27_ACCEL_CONFIG0_ODR_1600HZ   0x05
#define C6DOFIMU27_ACCEL_CONFIG0_ODR_800HZ   0x06
#define C6DOFIMU27_ACCEL_CONFIG0_ODR_400HZ   0x07
#define C6DOFIMU27_ACCEL_CONFIG0_ODR_200HZ   0x08
#define C6DOFIMU27_ACCEL_CONFIG0_ODR_100HZ   0x09
#define C6DOFIMU27_ACCEL_CONFIG0_ODR_50HZ   0x0A
#define C6DOFIMU27_ACCEL_CONFIG0_ODR_25HZ   0x0B
#define C6DOFIMU27_ACCEL_CONFIG0_ODR_12_5HZ   0x0C
#define C6DOFIMU27_ACCEL_CONFIG0_ODR_6_25HZ   0x0D
#define C6DOFIMU27_ACCEL_CONFIG0_ODR_3_125HZ   0x0E
#define C6DOFIMU27_ACCEL_CONFIG0_ODR_1_5625HZ   0x0F
#define C6DOFIMU27_ACCEL_CONFIG0_ODR_MASK   0x0F
#define C6DOFIMU27_WHO_AM_I   0xE9
 6DOF IMU 27 WHO_AM_I register setting.
#define C6DOFIMU27_GYRO_FS_SEL_15_625DPS   0x00
 6DOF IMU 27 gyro fs sel and odr setting.
#define C6DOFIMU27_GYRO_FS_SEL_31_25DPS   0x01
#define C6DOFIMU27_GYRO_FS_SEL_62_5DPS   0x02
#define C6DOFIMU27_GYRO_FS_SEL_125DPS   0x03
#define C6DOFIMU27_GYRO_FS_SEL_250DPS   0x04
#define C6DOFIMU27_GYRO_FS_SEL_500DPS   0x05
#define C6DOFIMU27_GYRO_FS_SEL_1000DPS   0x06
#define C6DOFIMU27_GYRO_FS_SEL_2000DPS   0x07
#define C6DOFIMU27_GYRO_FS_SEL_4000DPS   0x08
#define C6DOFIMU27_GYRO_ODR_1_5625HZ   0x00
#define C6DOFIMU27_GYRO_ODR_3_125HZ   0x01
#define C6DOFIMU27_GYRO_ODR_6_25HZ   0x02
#define C6DOFIMU27_GYRO_ODR_12_5HZ   0x03
#define C6DOFIMU27_GYRO_ODR_25HZ   0x04
#define C6DOFIMU27_GYRO_ODR_50HZ   0x05
#define C6DOFIMU27_GYRO_ODR_100HZ   0x06
#define C6DOFIMU27_GYRO_ODR_200HZ   0x07
#define C6DOFIMU27_GYRO_ODR_400HZ   0x08
#define C6DOFIMU27_GYRO_ODR_800HZ   0x09
#define C6DOFIMU27_GYRO_ODR_1600HZ   0x0A
#define C6DOFIMU27_GYRO_ODR_3200HZ   0x0B
#define C6DOFIMU27_GYRO_ODR_6400HZ   0x0C
#define C6DOFIMU27_GYRO_DATA_RES   32767.0
#define C6DOFIMU27_GYRO_MIN_DPS   15.625
#define C6DOFIMU27_ACCEL_FS_SEL_2G   0x00
 6DOF IMU 27 accel fs sel and odr setting.
#define C6DOFIMU27_ACCEL_FS_SEL_4G   0x01
#define C6DOFIMU27_ACCEL_FS_SEL_8G   0x02
#define C6DOFIMU27_ACCEL_FS_SEL_16G   0x03
#define C6DOFIMU27_ACCEL_FS_SEL_32G   0x04
#define C6DOFIMU27_ACCEL_ODR_1_5625HZ   0x00
#define C6DOFIMU27_ACCEL_ODR_3_125HZ   0x01
#define C6DOFIMU27_ACCEL_ODR_6_25HZ   0x02
#define C6DOFIMU27_ACCEL_ODR_12_5HZ   0x03
#define C6DOFIMU27_ACCEL_ODR_25HZ   0x04
#define C6DOFIMU27_ACCEL_ODR_50HZ   0x05
#define C6DOFIMU27_ACCEL_ODR_100HZ   0x06
#define C6DOFIMU27_ACCEL_ODR_200HZ   0x07
#define C6DOFIMU27_ACCEL_ODR_400HZ   0x08
#define C6DOFIMU27_ACCEL_ODR_800HZ   0x09
#define C6DOFIMU27_ACCEL_ODR_1600HZ   0x0A
#define C6DOFIMU27_ACCEL_ODR_3200HZ   0x0B
#define C6DOFIMU27_ACCEL_ODR_6400HZ   0x0C
#define C6DOFIMU27_ACCEL_DATA_RES   32767.0
#define C6DOFIMU27_ACCEL_MIN_G   2.0
#define C6DOFIMU27_TEMP_RES   128.0
 6DOF IMU 27 temperature calculation setting.
#define C6DOFIMU27_TEMP_OFFSET   25.0
#define C6DOFIMU27_DEVICE_ADDRESS_0   0x68
 6DOF IMU 27 device address setting.
#define C6DOFIMU27_DEVICE_ADDRESS_1   0x69
#define C6DOFIMU27_SET_DATA_SAMPLE_EDGE   SET_SPI_DATA_SAMPLE_EDGE
 Data sample selection.
#define C6DOFIMU27_SET_DATA_SAMPLE_MIDDLE   SET_SPI_DATA_SAMPLE_MIDDLE
#define C6DOFIMU27_MAP_MIKROBUS(cfg, mikrobus)
 MikroBUS pin mapping.

Typedefs

typedef err_t(* c6dofimu27_master_io_t) (struct c6dofimu27_s *, uint8_t, uint8_t *, uint8_t)
typedef struct c6dofimu27_s c6dofimu27_t
 6DOF IMU 27 Click context object.

Enumerations

enum  c6dofimu27_drv_t { C6DOFIMU27_DRV_SEL_SPI , C6DOFIMU27_DRV_SEL_I2C }
 6DOF IMU 27 Click driver selector. More...
enum  c6dofimu27_return_value_t { C6DOFIMU27_OK = 0 , C6DOFIMU27_ERROR = -1 }
 6DOF IMU 27 Click return value data. More...

Functions

void c6dofimu27_cfg_setup (c6dofimu27_cfg_t *cfg)
 6DOF IMU 27 configuration object setup function.
void c6dofimu27_drv_interface_sel (c6dofimu27_cfg_t *cfg, c6dofimu27_drv_t drv_sel)
 6DOF IMU 27 driver interface setup function.
err_t c6dofimu27_init (c6dofimu27_t *ctx, c6dofimu27_cfg_t *cfg)
 6DOF IMU 27 initialization function.
err_t c6dofimu27_default_cfg (c6dofimu27_t *ctx)
 6DOF IMU 27 default configuration function.
err_t c6dofimu27_write_regs (c6dofimu27_t *ctx, uint8_t reg, uint8_t *data_in, uint8_t len)
 6DOF IMU 27 write registers function.
err_t c6dofimu27_read_regs (c6dofimu27_t *ctx, uint8_t reg, uint8_t *data_out, uint8_t len)
 6DOF IMU 27 read registers function.
err_t c6dofimu27_write_reg (c6dofimu27_t *ctx, uint8_t reg, uint8_t data_in)
 6DOF IMU 27 write register function.
err_t c6dofimu27_read_reg (c6dofimu27_t *ctx, uint8_t reg, uint8_t *data_out)
 6DOF IMU 27 read register function.
uint8_t c6dofimu27_get_int1_pin (c6dofimu27_t *ctx)
 6DOF IMU 27 get int1 pin function.
uint8_t c6dofimu27_get_int2_pin (c6dofimu27_t *ctx)
 6DOF IMU 27 get int2 pin function.
err_t c6dofimu27_reset_device (c6dofimu27_t *ctx)
 6DOF IMU 27 reset device function.
err_t c6dofimu27_check_communication (c6dofimu27_t *ctx)
 6DOF IMU 27 check communication function.
err_t c6dofimu27_set_gyro_fs_odr (c6dofimu27_t *ctx, uint8_t fs_sel, uint8_t odr)
 6DOF IMU 27 set gyro fs odr function.
err_t c6dofimu27_set_accel_fs_odr (c6dofimu27_t *ctx, uint8_t fs_sel, uint8_t odr)
 6DOF IMU 27 set accel fs odr function.
err_t c6dofimu27_read_gyro (c6dofimu27_t *ctx, c6dofimu27_axes_t *gyro)
 6DOF IMU 27 read gyro function.
err_t c6dofimu27_read_accel (c6dofimu27_t *ctx, c6dofimu27_axes_t *accel)
 6DOF IMU 27 read accel function.
err_t c6dofimu27_read_temperature (c6dofimu27_t *ctx, float *temperature)
 6DOF IMU 27 read temperature function.
err_t c6dofimu27_read_data (c6dofimu27_t *ctx, c6dofimu27_data_t *data_out)
 6DOF IMU 27 read data function.

Detailed Description

This file contains API for 6DOF IMU 27 Click Driver.

Typedef Documentation

◆ c6dofimu27_master_io_t

typedef err_t(* c6dofimu27_master_io_t) (struct c6dofimu27_s *, uint8_t, uint8_t *, uint8_t)

Driver serial interface.

◆ c6dofimu27_t

typedef struct c6dofimu27_s c6dofimu27_t

6DOF IMU 27 Click context object.

Context object definition of 6DOF IMU 27 Click driver.

Enumeration Type Documentation

◆ c6dofimu27_drv_t

6DOF IMU 27 Click driver selector.

Selects target driver interface of 6DOF IMU 27 Click driver.

Enumerator
C6DOFIMU27_DRV_SEL_SPI 

SPI driver descriptor.

C6DOFIMU27_DRV_SEL_I2C 

I2C driver descriptor.

◆ c6dofimu27_return_value_t

6DOF IMU 27 Click return value data.

Predefined enum values for driver return values.

Enumerator
C6DOFIMU27_OK 
C6DOFIMU27_ERROR